.TH std::swap(std::function) 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::swap(std::function) \- std::swap(std::function)

.SH Synopsis
   Defined in header <functional>
   template< class R, class... Args >
   void swap( std::function<R(Args...)>& lhs, std::function<R(Args...)>&  \fI(since C++11)\fP
   rhs ) noexcept;

   Overloads the std::swap algorithm for std::function. Exchanges the state of lhs with
   that of rhs. Effectively calls lhs.swap(rhs).

.SH Parameters

   lhs, rhs - polymorphic function wrappers whose states to swap

.SH Return value

   \fI(none)\fP

.SH Example


// Run this code

 #include <functional>
 #include <iostream>

 void foo(const char* str, int x)
 {
     std::cout << "foo(\\"" << str << "\\", " << x << ")\\n";
 }

 void bar(const char* str, int x)
 {
     std::cout << "bar(\\"" << str << "\\", " << x << ")\\n";
 }

 int main()
 {
     std::function<void(const char*, int)> f1{foo};
     std::function<void(const char*, int)> f2{bar};

     f1("f1", 1);
     f2("f2", 2);

     std::cout << "std::swap(f1, f2);\\n";
     std::swap(f1, f2);

     f1("f1", 1);
     f2("f2", 2);
 }

.SH Output:

 foo("f1", 1)
 bar("f2", 2)
 std::swap(f1, f2);
 bar("f1", 1)
 foo("f2", 2)

   Defect reports

   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.

      DR    Applied to              Behavior as published              Correct behavior
   LWG 2062 C++11      overload of swap for function was not required  required
                       to be noexcept

.SH See also

   swap                          swaps the contents
                                 \fI(public member function)\fP
   swap(std::move_only_function) overloads the std::swap algorithm
   (C++23)                       \fI(function)\fP
